Generating and distributing image filters

ABSTRACT

Systems and methods for generating and distributing photo filters are described. A photo filter publication application receives filter data and object criteria and generates a photo filter based on the filter data. The photo filter is associated with satisfaction of the object criteria. A photo filter engine then identifies that a client device has taken a photograph. The photo filter engine then provides the photo filter to the client device based on the photograph including an object that satisfies the object criteria. The photo filter may then be displayed as an option on a user interface of the client device. The object criteria may include associations between an object and a source of image data, for example, a brand of a merchant in which case the associated photo filter may include images associated with the brand of the merchant.

PRIORITY

This application is a continuation of and claims the benefit of priorityof U.S. patent application Ser. No. 14/593,065, filed on Jan. 9, 2015,which is hereby incorporated by reference herein in its entirety.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to generating anddistributing photo filters. More specifically, the present disclosureaddresses systems and methods for presenting photo filters on a userinterface of a mobile device based on recognizing, in a photograph takenwith the mobile device, objects that satisfy specified object criteria.

BACKGROUND

The number of digital photographs taken with mobile wireless devices isincreasing and may soon outnumber photographs taken with dedicateddigital and film based cameras. Thus, there is a growing need to improvethe experience associated with mobile wireless digital photography byproviding a broader range of features that is often associated withdedicated digital and film based cameras.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings, in which:

FIG. 1 is a network diagram depicting a network system having aclient-server architecture configured for exchanging data over anetwork, according to one embodiment.

FIG. 2 shows a block diagram illustrating one example embodiment of amessaging application.

FIG. 3 shows a block diagram illustrating one example embodiment of aphoto filter application.

FIG. 4A shows a block diagram illustrating one example embodiment of auser-based photo filter publication module.

FIG. 4B shows an example of a graphical user interface for a user-basedphoto filter publication module.

FIG. 4C shows an example of an operation of the graphical user interfaceof FIG. 4B.

FIG. 4D illustrates an example of a publication of a user-based photofilter.

FIG. 5A shows a block diagram illustrating one example embodiment of amerchant-based photo filter publication module.

FIG. 5B illustrates an example of a common geolocation.

FIG. 5C illustrates an example of an operation of a merchant-based photofilter.

FIG. 6A shows a diagram illustrating an example of a photo filteroperating with a count module.

FIG. 6B shows a diagram illustrating an example of a photo filteroperating with a collection module.

FIG. 7 shows a flow diagram illustrating one example embodiment of anoperation of the user-based photo filter publication module.

FIG. 8 shows a flow diagram illustrating one example embodiment of anoperation of the merchant-based photo filter publication module.

FIG. 9 shows a flow diagram illustrating one example embodiment of anoperation of the collection module.

FIG. 10 shows a flow diagram illustrating one example embodiment of anoperation of the count module.

FIG. 11 shows a diagrammatic representation of machine, in the exampleform of a computer system, within which a set of instructions may beexecuted to cause the machine to perform any one or more of themethodologies discussed herein.

FIG. 12 is a block diagram illustrating a mobile device, according to anexample embodiment.

DETAILED DESCRIPTION

Although the present disclosure is described with reference to specificexample embodiments, it will be evident that various modifications andchanges may be made to these embodiments without departing from thebroader spirit and scope of the disclosure. Accordingly, thespecification and drawings are to be regarded in an illustrative ratherthan a restrictive sense.

The addition of labels, drawings and other artwork to photographsprovides a compelling way for users to personalize, supplement andenhance these photographs before storage or publication to a broaderaudience. An example technology provides users with a set of photofilters (e.g., providing enhancements and augmentations) that can beapplied to a photograph taken by the user. The set of photo filters(e.g., image overlays) may be determined based on a recognition of anobject in the photograph that satisfies specified object criteriaassociated with a photo filter. In this way, the photo filters arepresented to a user for selection and use with the photograph based on arecognized content of the photograph. For example, if the user takes aphotograph and an object in the photograph is recognized as the EmpireState Building, photo filters associated with the Empire State Buildingmay be provided to the user for use with the photograph. In thisexample, a picture of the Empire State Building may use a King Kongfilter that would place the giant ape on the Empire State Building inthe photograph at different perspectives. Therefore, a picture of thesouth face of the Empire State Building might see King Kong's back,while a picture from the north face might see King Kong's face lookingat you. In this example, provision of the King Kong filter may also beconstrained by a geo-fence (e.g., geographic boundary) around the areain New York including the Empire State Building. Of course, furtherEmpire State Building-themed photo filters may also be presented to theuser. The presentation of the photo filters to the user may be inresponse to the user performing a gesture (e.g. a swipe operation) on ascreen of the mobile device. Furthermore, although some exampleembodiments describe the use of filters in conjunction with photographs,it should be noted that other example embodiments contemplate the use offilters with videos.

Third party entities (e.g., merchants, restaurants, individual users,etc.) may, in one example embodiment, create photo filters for inclusionin the set presented for user selection based on recognition of anobject satisfying criteria specified by the creator of the photo filter.For example, a photograph including an object recognized as a restaurantmay result in the user being presented with photo filters that overly amenu of the restaurant on the photograph. Or a photograph including anobject recognized as a food type may result in the user being presentedwith photo filters that let the user view information e.g., calories,fat content, cost or other information associated with the food type.Third party entities may also bid (or otherwise purchase opportunities)to have a photo filter included in a set presented to a user foraugmentation of a particular photograph. Described below are varioussystems and methods for implementing the above described photographenhancements.

More specifically, various examples of a photo filter application aredescribed. The photo filter application includes a photo filterpublication module that operates at a server, in some embodiments, andgenerates photo filters based on filter data associated with thesatisfaction of specified object criteria by objects recognized in aphotograph. In other embodiments, some or all of the functionalityprovided by the photo filter publication module may be resident onclient devices. A photo filter may be generated based on supplied filterdata that may include audio and/or visual content or visual effects thatcan be applied to augment the photograph at a mobile computing device.The photo filter publication module may itself include a user-basedphoto filter publication module and a merchant-based photo filterpublication module.

The photo filter application also includes a photo filter engine thatdetermines that a mobile device has taken a photograph and, based on thephotograph including an object that satisfies the object criteria,provides the photo filter to the client device. To this end, the photofilter engine includes an object recognition module configured to findand identify objects in the photograph; and compare each object againstthe object criteria. The object criteria may include associationsbetween an object and a source of image data, for example exhibits in amuseum, in which case the associated photo filter may include imagesincluding data associated with a specific exhibit in the museum.

Using the user-based photo filter publication module, the photo filterpublication application provides a Graphical User Interface (GUI) for auser to upload filter data for generating a photo filter and objectcriteria for comparing to recognized objects in a photograph. Forexample, the user may upload a logo image for the creation of a photofilter and specify criteria that must be satisfied by an objectrecognized in the photograph in order for the filter to be madeavailable to a mobile device. Once the user submits the logo andspecifies the object criteria, the photo filter publication modulegenerates a photo filter that includes the logo and is associated withsatisfaction of the specified object criteria. As such, mobile devicesthat have taken a photograph including a recognized object thatsatisfies the specified object criteria may have access to thelogo-photo filter.

In other examples, if a photograph includes more than a specified numberof objects that satisfy specified object criteria, the photo filterengine may use a photo filter priority module to generate a ranking ofphoto filters associated with object criteria satisfied by the objectsin the photograph based on specified photo filter priority criteria. Thephoto filter engine may then provide the specified number of the photofilters to the client device according to the ranking of the photofilters, which may be based on any combination of a photo filtercreation date, a photo filter type, a user ranking of the photo filter,etc.

Using the merchant-based photo filter publication module, the photofilter publication application provides a GUI for merchants to uploadfilter data and object criteria, and submit bids for the presentation ofa photo filter based on the uploaded filter data based on thesatisfaction of the uploaded object criteria by an object recognized ina photograph. A bidding process may be used to determine the merchantwith the highest bid amount. That merchant can then exclude publicationof photo filters from other merchants (with lower bids) that mightotherwise be published based on satisfaction of the uploaded objectcriteria. Therefore, the photo filter of the highest bidding merchantmay be the only photo filter that can be accessed by mobile devices thathave taken a photograph including a recognized object that satisfies theuploaded object criteria. In examples, the common object criteriaincludes a type of object for which multiple merchants sell brandedproducts of the same type.

The photo filter engine includes a collection module to store previouslyprovided photo filters in a photo filter collection associated with aclient device. The collection module may then instruct the photo filterpublication module to provide a new photo filter to the client device inresponse to the photo filter collection including a specified number ofa type of photo filter. The collection module may operate based onpromotions from a merchant. For example, the collection module may beused to implement a game at a restaurant by providing certain premiumphoto filters to the client device only after the client device hascollected a specified number of photo filters of a specified type, e.g.,associated with recognition of a menu item. In an example, the premiumphoto filter may be used to obtain discounts and/or prizes at therestaurant.

The photo filter engine includes a count module to generate a count ofobjects of a specified object type identified in photographs taken bythe client device. The count module may then instruct the photo filterpublication module to adjust a content of a photo filter associated withthe specified object type in response to the count reaching a specifiedthreshold value. The count module may also operate based on promotionsfrom a merchant. For example, the count module may be used to implementa game at a restaurant by adjusting the content of photo filtersassociated with a certain menu item only after the count of photosincluding objects recognized as the menu item of the brand reaches aspecified threshold value. In an example, a photo filter associated withthe menu item may be adjusted to include celebratory graphics that maybe used to commemorate the user's achievements in ordering a certainnumber of menu items.

The photo filter publication modules include a video-creation module toprovide a video-creation photo filter to the mobile device. For example,the photo filter engine may recognize an object in foreground of aphotograph and alter the background (e.g., by adding motion) of thephotograph to create a video including the recognized object (i.e., tomake it appear as if the object is moving). Alternatively the photofilter engine may recognize an object in foreground of a photograph andadd motion to the object in order to create a video including therecognized object.

System Architecture

FIG. 1 is a network diagram depicting a network system 100 having aclient-server architecture configured for exchanging data over anetwork, according to one embodiment. For example, the network system100 may be a messaging system where clients may communicate and exchangedata within the network system 100. The data may pertain to variousfunctions (e.g., sending and receiving text and photo communication,determining geolocation) and aspects (e.g., publication of photofilters, management of photo filters) associated with the network system100 and its users. Although illustrated herein as client-serverarchitecture, other embodiments may include other network architectures,such as peer-to-peer or distributed network environments.

A data exchange platform, in an example, includes a messagingapplication 120 and a photo filter application 122, and may provideserver-side functionality via a network 104 (e.g., the Internet) to oneor more clients. Although described as residing on a server in someembodiments, in other embodiments some or all of the functions of photofilter application 122 may be provided by a client device. The one ormore clients may include users that use the network system 100 and, morespecifically, the messaging application 120 and the photo filterapplication 122, to exchange data over the network 104. These operationsmay include transmitting, receiving (communicating), and processing datato, from, and regarding content and users of the network system 100. Thedata may include, but is not limited to, content and user data such asuser profiles, messaging content, messaging attributes, photoattributes, client device information, geolocation information, photofilter data, object recognition data, object criteria for recognizedobjects in a photograph, among others.

In various embodiments, the data exchanges within the network system 100may be dependent upon user-selected functions available through one ormore client or user interfaces (UIs). The UIs may be associated with aclient machine, such as client devices 110, 112 using a programmaticclient 106, such as a client application. The programmatic client 106may be in communication with the messaging application 120 and photofilter application 122 via an application server 118. The client devices110, 112 include mobile devices with wireless communication components,and audio and optical components for capturing various forms of photoincluding photos and videos (e.g., photo application 107).

Turning specifically to the messaging application 120 and the photofilter application 122, an application program interface (API) server114 is coupled to, and provides programmatic interface to one or moreapplication server(s) 118. The application server 118 hosts themessaging application 120 and the photo filter application 122. Theapplication server 118 is, in turn, shown to be coupled to one or moredatabase servers 124 that facilitate access to one or more databases126.

The API server 114 communicates and receives data pertaining to messagesand photo filters, among other things, via various user input tools. Forexample, the API server 114 may send and receive data to and from anapplication (e.g., via the programmatic client 106) running on anotherclient machine (e.g., client devices 110, 112 or a third party server).

In one example embodiment, the messaging application 120 providesmessaging mechanisms for users of the client devices 110, 112 to sendmessages that include text and photo content such as pictures and video.The client devices 110, 112 can access and view the messages from themessaging application 120. Components of the messaging application 120are described in more detail below with respect to FIG. 2.

In one example embodiment, the photo filter application 122 provides asystem and a method for operating and publishing photo filters fordistribution via messages processed by the messaging application 120.The photo filter application 122 supplies a photo filter to the clientdevice 110 based on a recognized object in a photograph taken with theclient device 110 satisfying specified object criteria. In anotherexample, the photo filter application 122 supplies a photo filter to theclient device 110 based on the photo filter being associated with awinning bid from a merchant who created the photo filter. In otherexample embodiments, photo filters from merchants may be provided on aflat fee basis (e.g., a merchant agrees to pay a fixed amount for thepresentation of filters), a cost per view basis, or the like.

The photo filter may include audio and visual content and visualeffects. Examples of audio and visual content include pictures, texts,logos, animations, and sound effects. An example of a visual effectincludes color filtering. The audio and visual content or the visualeffects can be applied to a photograph stored at the client device 110.For example, the photo filter may include text that can be overlaid ontop of a photograph taken by the client device 110. In other examples,the photo filter may include images associated with a location, amerchant, a brand, a work of art, an animal, a person, etc. For example,in regard to a merchant, the photo filter may include indicia associatedwith the merchant like logos and/or other images (e.g., a spokesperson)related to the merchant. The photo filters may be stored in thedatabase(s) 126 and accessed through the database server 124.

The photo filter application 122 includes a photo filter publicationmodule that generates photo filters based on filter data associated withthe satisfaction of specified object criteria by objects recognized in aphotograph taken by the client device 110. A photo filter may begenerated based on supplied filter data that may include audio and/orvisual content or visual effects that can be applied to augment thephotograph. The photo filter publication module may itself include auser-based photo filter publication module and a merchant-based photofilter publication module.

In one example embodiment, the photo filter application 122 includes auser-based publication module that enables users to upload filter datafor generating a photo filter and object criteria for comparing againstrecognized objects in a photograph. For example, the user may upload alogo image for the creation of a photo filter and specify criteria thatmust be satisfied by an object recognized in the photograph in order forthe filter to be made available to a mobile device. Once the usersubmits the logo and specifies the object criteria, the photo filterpublication module generates a photo filter that includes the logo andis associated with satisfaction of the specified object criteria.

In another example embodiment, the photo filter application 122 includesa merchant-based publication module that enables merchants to to uploadfilter data and object criteria, and submit bids for the presentation ofa photo filter based on the uploaded filter data based on thesatisfaction of the uploaded object criteria by an object recognized ina photograph. A bidding process may be used to determine the merchantwith the highest bid. That merchant can then exclude publication ofphoto filters from other merchants (with lower bids) that mightotherwise be published based on satisfaction of the uploaded objectcriteria. Components of the photo filter application 122 are describedin more detail below with respect to FIG. 3.

Messaging Application

FIG. 2 shows a block diagram illustrating one example embodiment of themessaging application 120. The messaging application 120 may be hostedon dedicated or shared server machines (not shown) that arecommunicatively coupled to enable communications between servermachines. The messaging application 120 and the photo filter application122 themselves are communicatively coupled (e.g., via appropriateinterfaces) to each other and to various data sources, so as to allowinformation to be passed between the messaging application 120 and thephoto filter application 122, or so as to allow the messagingapplication 120 and the photo filter application 122 to share and accesscommon data. The messaging application 120 and the photo filterapplication 122 may, furthermore, access the one or more databases 126via the database server(s) 124.

The messaging application 120 is responsible for the generation anddelivery of messages between users of the programmatic client 106. Themessaging application 120 may use any one of a number of messagedelivery networks and platforms to deliver messages to users. Forexample, the messaging application 120 may deliver messages usingelectronic mail (e-mail), instant message (IM), Short Message Service(SMS), text, facsimile, or voice (e.g., Voice over IP (VoIP)) messagesvia wired (e.g., the Internet), plain old telephone service (POTS), orwireless networks (e.g., mobile, cellular, WiFi, Long Term Evolution(LTE), Bluetooth).

The messaging application 120 includes a photo receiver module 202, aphoto filter application interface 204, a message generator module 206,an ephemeral message access module 208, and an ephemeral message storagemodule 210. The photo receiver module 202 receives a message from theprogrammatic client 106 of the client device 110. The message mayinclude a combination of text, photo, or video. The photo receivermodule 202 may also receive metadata associated with the message. Themetadata may include a timestamp or geolocation information associatedwith the client device 110. The photo filter application interface 204communicates with the photo filter application 122 to access andretrieve a photo filter associated with specified object criteriasatisfied by an object recognized (e.g., by the photo filter engine) ina photograph taken by client device 110. The message generator module206 attaches the retrieved photo filter to the message from theprogrammatic client 106 to create an ephemeral message and temporarilystore the ephemeral message with the ephemeral message storage module210.

The ephemeral message access module 208 notifies a recipient of themessage of the availability of the ephemeral message. The ephemeralmessage access module 208 receives a request to access the ephemeralmessage from the recipient and causes the ephemeral message to bedisplayed on a client device of the recipient for a specified duration.Once the recipient views the message for the specified duration, theephemeral message access module 208 causes the client device of therecipient to stop displaying the ephemeral message, and deletes theephemeral message from the ephemeral message storage module 210.

Photo Filter Application

FIG. 3 shows a block diagram illustrating one example embodiment of thephoto filter application 122. The photo filter application 122 includesa photo filter publication module 304 and a photo filter engine 306.

The photo filter publication module 304 provides a platform forpublication of photo filters. In an example embodiment, the photo filterpublication module 304 includes a user-based publication module 314 anda merchant-based publication module 316. The user-based publicationmodule 314 enables users of client devices (either mobile or webclients) to upload filter data for generating a photo filter and objectcriteria for comparing against recognized objects in a photograph. Themerchant-based publication module 316 enables merchants to upload filterdata and object criteria, and submit bids for the presentation of aphoto filter based on the uploaded filter data based on the satisfactionof the uploaded object criteria by an object recognized in a photograph.The user-based publication module 314 is described in more detail belowwith respect to FIG. 4A. The merchant-based publication module 316 isdescribed in more detail below with respect to FIG. 5A.

The photo filter engine 306 identifies that a client device (e.g., 110)has taken a photograph and visually searches the photograph in order torecognize objects in the photograph. In one example embodiment, thephoto filter engine 306 includes a photo filter priority module 318, anobject recognition module 320, a merchant-based photo filter module 322,a collection module 324 and a count module 326. The photo filtersprovided to a client device 110 by the photo filter engine 306 may bebased on: object criteria determined to be satisfied, via objectrecognition module 320, by a recognized object in the photograph; aranking of photo filters by the photo filter priority module 318, and/ora winning bid from a merchant as determined via the merchant-based photofilter module 322.

In examples, the photo filter engine includes a collection module 324 tostore previously provided photo filters in a photo filter collectionassociated with a client device 110. The collection module 324 may theninstruct the photo filter publication module 314 to provide a new photofilter to the client device 110 in response to the photo filtercollection including a specified number of a type of photo filter. Thenumber may be specified by the user or merchant uploading the contentused to generate the photo filter.

In examples, if a photograph includes more than a specified number ofobjects that satisfy specified object criteria, the photo filter engine306 may use the photo filter priority module 318 to generate a rankingof photo filters associated with the object criteria satisfied by theobjects in the photograph based on specified photo filter prioritycriteria. The photo filter engine 306 may then provide the specifiednumber of the photo filters to the client device 110 according to theranking of the photo filters, which may be based on any combination of:a photo filter creation date; a photo filter type; a user ranking of thephoto filter; etc.

The object recognition module 320 first visually searches the photographin order to find and identify objects in the photograph. This may beaccomplished via known object recognition techniques such as edgematching, greyscale matching, large model bases, gradient matching, etc.The object recognition module 320 then compares each recognized objectagainst the specified object criteria to determine if object criteriaassociated with a particular photo filter has been satisfied and, if so,providing said photo filter to the client device 110. The objectcriteria may include associations between an object and a source ofimage data, for example a specific animal, in which case the associatedphoto filter may include images including data associated with aspecific animal.

The merchant-based photo filter module 322 supplies the client devicewith a merchant-based photo filter generated by the merchant-based photofilter publication module 316 based on a bidding process used todetermine the merchant with the highest bid amount in regard to aspecified object criteria. The merchant with the highest bid can thenexclude publication of photo filters from other merchants with lowerbids that might otherwise be published (to the client device 110) basedon satisfaction of the specified object criteria.

FIG. 4A shows a block diagram illustrating an example embodiment of theuser-based photo filter publication module 314. The user-based photofilter publication module 314 shown includes a user-based filter dataupload module 402, a user-based object criteria upload module 404, auser based video creation module 406, and a user-based publicationengine 408. The user-based photo filter publication module 314 may beimplemented on a web server to allow a user to upload the content usinga GUI as illustrated in FIG. 4B.

The user-based filter data upload module 402 receives uploaded contentfrom a user. The content may include images such as a photo or a videoor other image file types (e.g., .jpeg, .bmp, etc.) The content may alsoinclude other data used to generate a photo filter that operates as theuser desires. For example, the user may select to have any previouslyprovided photo filters (e.g., to a client device 110) stored in a photofilter collection associated with a client device. The user may thengenerate photo filters that refer to this collection (e.g., by queryingits contents) before they may be provided as a new photo filter toclient device 110. In another example, the user may select to have acount of objects of a specified object type identified in photographstaken by the client device 110 stored. The user may then generate photofilters that refer to this count (e.g., by querying its value) beforethey are provided as a new photo filter to client device 110 in order toadjust a content of the provided photo filter in response to the countreaching a specified threshold value.

The user-based object criteria upload module 404 receives objectcriteria requirements from the user to instruct photo filter engine 306regarding the criteria that must be satisfied by an object recognized(e.g., via object recognition module 320) in a photograph before auser-based photo filter may be provided to client device 110. Forexample, a photograph including an object recognized as a human shouldermay result in the user being presented with photo filters that couldoverlay a pet bird resting on the shoulder in the photograph. Or aphotograph including an object recognized as a known monument may resultin the user being presented with photo filters that let the user viewinformation (e.g., historical facts) associated with the monument.

The user-based video creation module 406 receives, from a user, videodata (e.g., video or instructions for generating video from a photo byinserting motion) related to specific uploaded filter data and uploadedobject criteria. This data may be used by the photo filter publicationmodule engine 314 to generate a user-based photo filter that transformsa photograph into a video based on recognizing a particular object(e.g., the ocean) in the photograph. For example, if a ship isrecognized in the foreground of a photograph then the photo filter mayalter the background water (e.g., by adding motion) of the photograph tocreate a video including the recognized ship and ocean objects.Alternatively the photo filter may add motion to the ship object in theforeground of the photograph in order to create a video including therecognized objects.

The user-based publication engine 408 generates a user-based photofilter that associates the uploaded filter data from the user-basedfilter data upload module 402 with the uploaded object criteria from theuser-based object criteria upload module 404. The user-based photofilter may also associate the uploaded video data from the user-basedvideo creation module 402 with uploaded filter data from the user-basedfilter data upload module 402 and the uploaded object criteria from theuser-based object criteria upload module 404. The user-based publicationengine 408 publishes the user-based photo filter to client devices forwhich the photo filter engine 306 has determined that a photograph hasbeen taken that includes a recognized object that satisfies the uploadedobject criteria.

FIG. 4B illustrates an example of a GUI 410 for uploading filter dataand for uploading object criteria with respect to recognized objects ina photograph. The GUI 410 displays an upload object models box 412, anupload image files box 414, an object criteria box 416, a filter databox 418, and a submit button 420. The upload image files box 414 enablesa user to upload image files, (e.g., a photograph or a video) to theuser-based filter data upload module 402. The object criteria box 416enables the user to upload object criteria by inputting specificrequirements that must be satisfied by a recognized object in thephotograph. The syntax used for specifying object criteria may beparticular to the photo filter application (e.g., 122) or a naturallanguage description of the criteria that must be satisfied may be used.Furthermore, object criteria may be specified by the user moreexplicitly via the upload object models box 412. The user can upload aspecific object model to be used by the photo filter engine 306 tocompare to objects recognized in a photograph. The object criteria aresubmitted to the user-based object criteria upload module 404. Thefilter data box 418 enables the user to submit any other data needed toidentify and/or operate the user-based photo filter, for example a titlefor the user-based photo filter. The user may submit the image files,filter data and object criteria by clicking on the submit button 420.Once the image files, filter data and object criteria are submitted, theuser-based publication engine 408 generates a user-based photo filterbased on the image files, filter data and object criteria.

FIG. 4C illustrates an example where the user has uploaded a picture ofa gorilla 415 displayed in the upload image box 414. The user hasentered the object criteria “Empire State Building” via the objectcriteria box 418 and uploaded an associated object model 422 via theupload object models box 412. The user has entered the title of thephoto filter “King Kong!” in the filter data box 418. The user maysubmit the picture of the gorilla 415, the object criteria “Empire StateBuilding” (which may be associated with a specified object model 422 inphotograph 412) and the filter title “King Kong!” by clicking on thesubmit button 420. Once the picture of the gorilla 415, the filter title“King Kong!” (and any other filter data) and the object criteria “EmpireState Building” are submitted, the user-based publication engine 408generates a user-based photo filter based on the uploaded content.

FIG. 4D illustrates an example of a publication of a user-based photofilter. The photo filter application 122 detects that a mobile device1200 has taken a photograph 424 that includes the recognized object 426that corresponds sufficiently to specified object 422 and thereforesatisfies the object criteria “Empire State Building”. The photo filterapplication 122 retrieves the user-based photo filter 440 (e.g., “KingKong!”) corresponding to the satisfied object criteria “Empire StateBuilding” and publishes the user-based photo filter 440 to the mobiledevice 1200. The user-based photo filter 440 may then be selected forapplication to photo content 450 in a display 1210 of the mobile device1200. For example, the image of a gorilla 415 may be positioned atvarious locations (e.g., by user tapping on the location) to appear asif King Kong was climbing the object 426 (recognized in photograph 424)that satisfies the object criteria “Empire State Building” associatedwith user-based photo filter 440.

FIG. 5A shows a block diagram illustrating one example embodiment of themerchant-based photo filter publication module 316. The merchant-basedphoto filter publication module 316 includes a merchant-based filterdata upload module 502, a merchant-based object criteria upload module504, a merchant-based video creation module 506, a merchant-basedbidding module 508, and a merchant-based publication engine 510. Themerchant-based photo filter publication module 316 may be implemented ona web server to allow a user to upload the content using a GUI similarto the GUI illustrated in FIG. 4B.

The merchant-based content upload module 502, the merchant-based objectcriteria upload module 504 and the merchant-based video creation module506 function in a similar fashion to the respective user based modules402, 404 and 406. The merchant-based bidding module 508 provides aninterface to enable a merchant to submit a bid amount for specificobject criteria if other merchants have also uploaded the same objectcriteria as part of their own merchant-based photo filters. In this way,if a photograph includes a recognized object that satisfies said objectcriteria common to multiple merchant-based photo filters, then themerchant-based photo filter uploaded by the merchant with the highestbid amount would be provided to the device that took the photograph. Abidding process may be used to determine the merchant with the highestbid amount and that merchant can then exclude publication of photofilters from other merchants that might otherwise be published basedupon satisfaction of the common object criteria. The common objectcriteria may include, for example, a shopping centre sign associatedwith a shopping centre in which several businesses operate (e.g., havethe same street address but different suite numbers). A photographincluding a recognized object that satisfies the object criteria (i.e.,a photo containing the sign) would then be provided with themerchant-based photo filter uploaded by the merchant with the highestbid amount for the common object criteria.

FIG. 5B illustrates an example of a common object criteria. Merchant Aphoto filter object criteria overlaps with merchant B photo filterobject criteria 514 to define a common object criteria 516. Thus,merchants A and B may submit respective bids corresponding to the commonobject criteria 516. In one example embodiment, the merchant-basedobject criteria module 504 determines common object criteria from theobject criteria uploaded by the merchants. The merchant-based biddingmodule 508 identifies a highest bidder for the common object criteriaand awards the highest bidder with the ability to exclude othermerchant-based photo filters (associated with the common objectcriteria) from being provided to a device that has taken a photographincluding a recognized object that satisfies the common object criteriafor a predefined amount of time, e.g., until a next time period forsubmitting new bids for object criteria.

In another example embodiment, the merchant-based bidding module 508prorates bid amounts based on corresponding time duration informationsubmitted with the bid. For example, merchant A submits a bid amount of$100 for one day for specific object criteria. Merchant B submits a bidamount of $160 for two days for the same object criteria. Themerchant-based bidding module 508 may prorate the bid from merchant Bfor one day (e.g., $80) and compare both bids for the same period oftime (e.g., one day) to determine a highest bidder.

The merchant-based publication engine 510 generates a merchant-basedphoto filter that associates the uploaded filter data of the highestbidder with the object criteria uploaded by the highest bidder. Themerchant-based publication engine 510 publishes the merchant-based photofilter to client devices that have taken a photograph including arecognized object that satisfies the common object criteria 516.Merchant-based photo filters from other merchants that are alsoassociated with the object criteria 516 are excluded from publication tothe client devices. In another embodiment, instead of a singlemerchant-based photo filter for common object criteria, a quota may beplaced on the number of merchant-based photo filters available for thecommon object criteria 516. For example, the merchant-based publicationengine 510 may publish and make available a limited number ofmerchant-based photo filters (e.g., a maximum of two merchant-basedphoto filters) for the common object criteria 516.

In another example embodiment, the merchant-based publication engine 510forms a priority relationship that associates the uploaded filter dataof the higher bidders with the common object criteria 516. For example,an order in which photo filters are displayed at the client device 110may be manipulated based on the results from the merchant-based biddingmodule 508. A photo filter of a merchant with the highest bid may beprioritized and displayed first at the client device 110 when aphotograph satisfies the common object criteria 516. Photo filters fromother merchants may be displayed at the client device 110 after thephoto filter of the highest bidder. Again, as described above, merchantphoto filters may be prioritized and displayed according to otherprocesses, including, e.g., on a fix/flat fee or per view/display basis,etc.

FIG. 5C shows a diagram illustrating an example of a merchant-basedphoto filter selected based on a bidding process. The object criteria540 of merchant A and the criteria 550 of merchant B overlap at commonobject criteria 545. The mobile device 1200 is used to generate thephoto content 570 (e.g., used to takes a picture) in the display 1210 ofthe mobile device 1200. The photo content 570 includes a recognizedobject 580 that satisfies the common object criteria 545. A photo filterof the merchant with the highest bid for the common object criteria 545is published to the mobile device 1200. In the present example, merchantB has outbid merchant A for the common object criteria “object type:coffee”. The common object criteria “object type: coffee” may refer toany object commonly associated with coffee as well as explicit examplesof coffee objects such as a cup of coffee or a coffee bean. As such,photo filter 560 of merchant B (associated with a brand of coffee soldby merchant B) is provided and displayed in the display 1210 on top ofthe photo content 570. The photo filter 560 is based on the uploadedfilter data from merchant B. It should be noted that ‘merchant’ in thecontext of the current example embodiments may include not only entitiesinvolved in the trade or sale of merchandise but any other entity aswell, including individuals, universities, non-profit organizations,student organizations, clubs, etc.

FIG. 6A shows a diagram illustrating an example of a photo filter 610published on the basis of a count of an object type (e.g., satisfies aspecified object criteria such as “cup of coffee”) across all of thephotographs taken by a mobile device 1200. This count may be processedby count module 326 of photo filter engine 306. For example, the photofilter 610 includes a digital coupon 620 that can be redeemed at acoffee shop “Coffee House”. The photo filter 610 may include dynamiccontent 630. For example, the dynamic content 630 may include aremaining number of times the coupon can be used. The photo filter 610may include an action button 640 for executing a related action such asprinting the coupon. Furthermore, the photo filter 610 may be providedto mobile device 1200 only after the count for the specified object type(e.g., cups of coffee) has surpassed a specified threshold valueuploaded by the merchant (e.g., uploaded filter data) associated withthe photo filter 610. The mobile device 1200 displays the photo filter610 with the photo content 650.

FIG. 6B shows a diagram illustrating an example of a photo filter 660published on the basis of a collection of photo filters previouslypublished to a mobile device 1200. In an example embodiment thiscollection may be processed by collection module 324 of photo filterengine 306. The photo filter 660 can be published to the mobile device1200 in response to the photo filter publication module 314 determiningthat a photo filter collection associated with mobile device 1200 hasexceeded a minimum number of photo filters a specified type, after whicha premium photo filter may be accessed. For example, the collectionbased photo filter may be used to implement a game at a restaurant(e.g., Mike's Deli) by providing certain premium photo filters (e.g., a“free sandwich” photo filter) to mobile device 1200 only after themobile device 1200 has collected the required amount of “menu item” typephoto filters associated with Mike's Deli. In an example, the premiumphoto filter may be used to obtain discounts and/or prizes at therestaurant, e.g., a free sandwich. The mobile device 1200 displays thephoto filter 660 on top of the photo content 650.

FIG. 7 shows a flow diagram illustrating one example embodiment of amethod 700 of the user-based photo filter publication module 314. Atoperation 702, the user-based photo filter publication module 314receives uploaded filter data and uploaded object criteria from a firstclient device. In one example embodiment, operation 702 may beimplemented with the user-based filter data upload module 402, theuser-based object criteria upload module 404, and the user-based videocreation module 406 of FIG. 4A.

At operation 704, the user-based photo filter publication module 314generates a user-based photo filter based on the uploaded filter data,and is associated with the uploaded object criteria. In one exampleembodiment, operation 704 may be implemented with the user-basedpublication engine 408 of FIG. 4A.

At operation 706, the photo filter engine 306 determines that aphotograph has been taken by a second client device and visuallysearches the photograph in order to perform object recognition on thephotograph. At operation 708, the photo filter engine 306 determineswhether a recognized object in the photograph satisfies the uploadedobject criteria from the first client device. If not, then the method700 returns to operation 706 in order to search for more objects in thephotograph. If the recognized object does satisfy the uploaded objectcriteria from the first client device then, at operation 710, theuser-based photo filter publication module 314 publishes the user-basedphoto filter from the first client device to the second client device inresponse. In one example embodiment, operation 710 may be implementedwith the user-based publication engine 408 of FIG. 4A.

FIG. 8 shows a flow diagram illustrating one example embodiment of amethod 800 of operation for the merchant-based photo filter publicationmodule 316. At operations 802 and 804, the merchant-based photo filterpublication module 316 receives uploaded filter data, object criteria,and corresponding bid amounts from two merchants. For example, atoperation 802, the merchant-based filter data upload module 502 receivesfilter data A from merchant A. The merchant-based object criteria uploadmodule 504 receives object criteria X from merchant A. Themerchant-based bidding module 508 receives bid amount A from merchant A.

At operation 804, the merchant-based content upload module 502 receivescontent B from merchant B. The merchant-based filter data upload module502 receives filter data B from merchant B. The merchant-based objectcriteria upload module 504 receives object criteria X from merchant B.The merchant-based bidding module 508 receives bid amount B frommerchant B.

At operation 806, the highest bid amount is determined. In one exampleembodiment, operation 806 may be implemented with the merchant-basedbidding module 508 of FIG. 5A. If bid amount A is greater than bidamount B (as determined by the merchant-based photo filter publicationmodule 322), the merchant-based publication engine 510 generates amerchant-based photo filter A (associated with object criteria X) basedon filter data A at operation 808. At operation 810, the merchant-basedpublication engine 510 supplies merchant-based photo filter A to clientdevices that have taken a photograph including a recognized object thatsatisfies object criteria X.

If bid amount B is greater than bid amount A, the merchant-basedpublication engine 510 generates a merchant-based photo filter B(associated with object criteria X) based on filter data B at operation814. At operation 816, the merchant-based publication engine 510supplies merchant-based photo filter B to client devices that have takena photograph including a recognized object that satisfies objectcriteria X.

FIG. 9 shows a flow diagram illustrating one example embodiment of amethod 900 of operation for collection module 324 of photo filter engine306. At operation 902, a new photo filter is received by a clientdevice. At operation 904, the collection module 324 determines whetherthe photo filter is of the same type as the photo filters in acollection of photo filters associated with the client device. If so, atoperation 906, the collection module 324 adds the new photo filter tothe collection associated with the client device. If not the method 900ends. At operation 908, the collection module 324 determines whether thecollection has reached a specified size threshold. If so, at operation910, the collection module 324 instructs the photo filter publicationmodule 304 to provide a new premium photo filter to the client device.If not the method 900 ends.

FIG. 10 shows a flow diagram illustrating one example embodiment of amethod 1000 of operation for count module 326 of photo filter engine306. At operation 1002, a new photo is taken by a client device. Atoperation 1004, the count module 324 determines whether the photoincludes an object of a specified type, e.g., a type of food. If so, atoperation 1006, the count module 326 increases a count of photographedobjects (of the specified type) associated with the client device. Ifnot the method 1000 ends. At operation 1008, the count module 326determines whether the value of the count associated with the clientdevice has reached a specified value threshold. If so, at operation1010, the count module 324 instructs the photo filter publication module304 to adjust the content of a photo filter associated with the objecttype. If not the method 1000 ends.

Modules, Components and Logic

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied (1) on a non-transitorymachine-readable medium or (2) in a transmission signal) orhardware-implemented modules. A hardware-implemented module is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain manner. In example embodiments, oneor more computer systems (e.g., a standalone, client, or server computersystem) or one or more processors may be configured by software (e.g.,an application or application portion) as a hardware-implemented modulethat operates to perform certain operations as described herein.

In various embodiments, a hardware-implemented module may be implementedmechanically or electronically. For example, a hardware-implementedmodule may comprise dedicated circuitry or logic that is permanentlyconfigured (e.g., as a special-purpose processor, such as a fieldprogrammable gate array (FPGA) or an application-specific integratedcircuit (ASIC)) to perform certain operations. A hardware-implementedmodule may also comprise programmable logic or circuitry (e.g., asencompassed within a general-purpose processor or other programmableprocessor) that is temporarily configured by software to perform certainoperations. It will be appreciated that the decision to implement ahardware-implemented module mechanically, in dedicated and permanentlyconfigured circuitry, or in temporarily configured circuitry (e.g.,configured by software) may be driven by cost and time considerations.

Accordingly, the term “hardware-implemented module” should be understoodto encompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired), or temporarily ortransitorily configured (e.g., programmed) to operate in a certainmanner or to perform certain operations described herein. Consideringembodiments in which hardware-implemented modules are temporarilyconfigured (e.g., programmed), each of the hardware-implemented modulesneed not be configured or instantiated at any one instance in time. Forexample, where the hardware-implemented modules comprise ageneral-purpose processor configured using software, the general-purposeprocessor may be configured as respectively differenthardware-implemented modules at different times. Software may,accordingly, configure a processor, for example, to constitute aparticular hardware-implemented module at one instance of time and toconstitute a different hardware-implemented module at a differentinstance of time.

Hardware-implemented modules can provide information to, and receiveinformation from, other hardware-implemented modules. Accordingly, thedescribed hardware-implemented modules may be regarded as beingcommunicatively coupled. Where multiples of such hardware-implementedmodules exist contemporaneously, communications may be achieved throughsignal transmission (e.g., over appropriate circuits and buses thatconnect the hardware-implemented modules). In embodiments in whichmultiple hardware-implemented modules are configured or instantiated atdifferent times, communications between such hardware-implementedmodules may be achieved, for example, through the storage and retrievalof information in memory structures to which the multiplehardware-implemented modules have access. For example, onehardware-implemented module may perform an operation, and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware-implemented module may then,at a later time, access the memory device to retrieve and process thestored output. Hardware-implemented modules may also initiatecommunications with input or output devices, and can operate on aresource (e.g., a collection of information).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions. The modulesreferred to herein may, in some example embodiments, compriseprocessor-implemented modules.

Similarly, the methods described herein may be at least partiallyprocessor-implemented. For example, at least some of the operations of amethod may be performed by one or more processors orprocessor-implemented modules. The performance of certain of theoperations may be distributed among the one or more processors, not onlyresiding within a single machine, but deployed across a number ofmachines. In some example embodiments, the processor or processors maybe located in a single location (e.g., within a home environment, anoffice environment, or a server farm), while in other embodiments theprocessors may be distributed across a number of locations.

The one or more processors may also operate to support performance ofthe relevant operations in a “cloud computing” environment or as a“software as a service” (SaaS). For example, at least some of theoperations may be performed by a group of computers (as examples ofmachines including processors), with these operations being accessiblevia the network 104 (e.g., the Internet) and via one or more appropriateinterfaces (e.g., APIs).

Electronic Apparatus and System

Example embodiments may be implemented in digital electronic circuitry,or in computer hardware, firmware, or software, or in combinations ofthem. Example embodiments may be implemented using a computer programproduct (e.g., a computer program tangibly embodied in an informationcarrier, e.g., in a machine-readable medium for execution by, or tocontrol the operation of, data processing apparatus, e.g., aprogrammable processor, a computer, or multiple computers).

A computer program can be written in any form of programming language,including compiled or interpreted languages, and it can be deployed inany form, including as a standalone program or as a module, subroutine,or other unit suitable for use in a computing environment. A computerprogram can be deployed to be executed on one computer or on multiplecomputers at one site or distributed across multiple sites andinterconnected by a communication network.

In example embodiments, operations may be performed by one or moreprogrammable processors executing a computer program to performfunctions by operating on input data and generating output. Methodoperations can also be performed by, and apparatus of exampleembodiments may be implemented as, special purpose logic circuitry(e.g., an FPGA or an ASIC).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. Inembodiments deploying a programmable computing system, it will beappreciated that both hardware and software architectures meritconsideration. Specifically, it will be appreciated that the choice ofwhether to implement certain functionality in permanently configuredhardware (e.g., an ASIC), in temporarily configured hardware (e.g., acombination of software and a programmable processor), or in acombination of permanently and temporarily configured hardware may be adesign choice. Below are set out hardware (e.g., machine) and softwarearchitectures that may be deployed in various example embodiments.

Example Computer System

FIG. 11 shows a diagrammatic representation of a machine in the exampleform of a machine or computer system 1100 within which a set ofinstructions 1124 may be executed causing the machine to perform any oneor more of the methodologies discussed herein. In alternativeembodiments, the machine operates as a standalone device or may beconnected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine 110 and 112 in a server-client network environment, or asa peer machine in a peer-to-peer (or distributed) network environment.The machine may be a personal computer (PC), a tablet PC, a set-top box(STB), a personal digital assistant (PDA), a cellular telephone, a webappliance, a network router, switch or bridge, or any machine capable ofexecuting a set of instructions 1124 (sequential or otherwise) thatspecify actions to be taken by that machine. Further, while only asingle machine is illustrated, the term “machine” shall also be taken toinclude any collection of machines that individually or jointly executea set (or multiple sets) of instructions 1124 to perform any one or moreof the methodologies discussed herein.

The example computer system 1100 includes a processor 1102 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU), orboth), a main memory 1104, and a static memory 1106, which communicatewith each other via a bus 1108. The computer system 1100 may furtherinclude a video display unit 1110 (e.g., a liquid crystal display (LCD)or a cathode ray tube (CRT)). The computer system 1100 also includes analphanumeric input device 1112 (e.g., a keyboard), a UI navigationdevice 1114 (e.g., a mouse), a drive unit 1116, a signal generationdevice 1118 (e.g., a speaker), and a network interface device 1120.

The drive unit 1116 includes a computer-readable medium 1122 on which isstored one or more sets of data structures and instructions 1124 (e.g.,software) embodying or used by any one or more of the methodologies orfunctions described herein. The instructions 1124 may also reside,completely or at least partially, within the main memory 1104 or withinthe processor 1102 during execution thereof by the computer system 1100,with the main memory 1104 and the processor 1102 also constitutingmachine-readable photo.

The instructions 1124 may further be transmitted or received over anetwork 1126 via the network interface device 1120 utilizing any one ofa number of well-known transfer protocols (e.g., HTTP).

While the computer-readable medium 1122 is shown in an exampleembodiment to be a single medium, the term “computer-readable medium”should be taken to include a single medium or multiple photo (e.g., acentralized or distributed database, and/or associated caches andservers) that store the one or more sets of instructions 1124. The term“computer-readable medium” shall also be taken to include any mediumthat is capable of storing, encoding, or carrying a set of instructions1124 for execution by the machine that cause the machine to perform anyone or more of the methodologies of the present disclosure, or that iscapable of storing, encoding, or carrying data structures used by orassociated with such a set of instructions 1124. The term“computer-readable medium” shall, accordingly, be taken to include, butnot be limited to, solid-state memories, optical photo, and magneticphoto.

Furthermore, the machine-readable medium is non-transitory in that itdoes not embody a propagating signal. However, labeling the tangiblemachine-readable medium “non-transitory” should not be construed to meanthat the medium is incapable of movement—the medium should be consideredas being transportable from one physical location to another.Additionally, since the machine-readable medium is tangible, the mediummay be considered to be a machine-readable device.

Example Mobile Device

FIG. 12 is a block diagram illustrating a mobile device 1200, accordingto an example embodiment. The mobile device 1200 may include a processor1202. The processor 1202 may be any of a variety of different types ofcommercially available processors 1202 suitable for mobile devices 1200(for example, an XScale architecture microprocessor, a microprocessorwithout interlocked pipeline stages (MIPS) architecture processor, oranother type of processor 1202). A memory 1204, such as a random accessmemory (RAM), a flash memory, or another type of memory, is typicallyaccessible to the processor 1202. The memory 1204 may be adapted tostore an operating system (OS) 1206, as well as applications 1208, suchas a mobile location enabled application that may provide location-basedservices (LBSs) to a user. The processor 1202 may be coupled, eitherdirectly or via appropriate interphotory hardware, to a display 1210 andto one or more input/output (I/O) devices 1212, such as a keypad, atouch panel sensor, a microphone, and the like. Similarly, in someembodiments, the processor 1202 may be coupled to a transceiver 1214that interfaces with an antenna 1216. The transceiver 1214 may beconfigured to both transmit and receive cellular network signals,wireless data signals, or other types of signals via the antenna 1216,depending on the nature of the mobile device 1200. Further, in someconfigurations, a GPS receiver 1218 may also make use of the antenna1216 to receive GPS signals.

Although an embodiment has been described with reference to specificexample embodiments, it will be evident that various modifications andchanges may be made to these embodiments without departing from thebroader spirit and scope of the present disclosure. Accordingly, thespecification and drawings are to be regarded in an illustrative ratherthan a restrictive sense. The accompanying drawings that form a parthereof show by way of illustration, and not of limitation, specificembodiments in which the subject matter may be practiced. Theembodiments illustrated are described in sufficient detail to enablethose skilled in the art to practice the teachings disclosed herein.Other embodiments may be used and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. This Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

As used herein, the term “or” may be construed in either an inclusive orexclusive sense. Moreover, plural instances may be provided forresources, operations, or structures described herein as a singleinstance. Additionally, boundaries between various resources,operations, modules, engines, and data stores are somewhat arbitrary,and particular operations are illustrated in a context of specificillustrative configurations. Other allocations of functionality areenvisioned and may fall within a scope of various embodiments of thepresent invention. In general, structures and functionality presented asseparate resources in the example configurations may be implemented as acombined structure or resource. Similarly, structures and functionalitypresented as a single resource may be implemented as separate resources.These and other variations, modifications, additions, and improvementsfall within a scope of embodiments of the present invention asrepresented by the appended claims. The specification and drawings are,accordingly, to be regarded in an illustrative rather than a restrictivesense.

Such embodiments of the inventive subject matter may be referred toherein, individually or collectively, by the term “invention” merely forconvenience and without intending to voluntarily limit the scope of thisapplication to any single invention or inventive concept if more thanone is in fact disclosed. Thus, although specific embodiments have beenillustrated and described herein, it should be appreciated that anyarrangement calculated to achieve the same purpose may be substitutedfor the specific embodiments shown. This disclosure is intended to coverany and all adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the above description.

The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b), requiring an abstract that will allow the reader to quicklyascertain the nature of the technical disclosure. It is submitted withthe understanding that it will not be used to interpret or limit thescope or meaning of the claims. In addition, in the foregoing DetailedDescription, it can be seen that various features are grouped togetherin a single embodiment for the purpose of streamlining the disclosure.This method of disclosure is not to be interpreted as reflecting anintention that the claimed embodiments require more features than areexpressly recited in each claim. Rather, as the following claimsreflect, inventive subject matter lies in less than all features of asingle disclosed embodiment. Thus, the following claims are herebyincorporated into the Detailed Description, with each claim standing onits own as a separate embodiment.

What is claimed is:
 1. A system comprising: a processor; and memorycoupled to the processor and storing instructions that, when executed bythe processor, cause the system to perform operations comprising:detecting that a client device in communication with the system hascaptured an image; identifying an object in the image; identifying animage overlay having object criteria satisfied by the identified object;providing the identified image overlay to the client device; storing theprovided image overlay in a collection of image overlays associated withthe client device; determining that the collection of image overlayscontains more than a specified number of stored image overlays of aspecified type; and in response to determining that the collection ofimage overlays contains more than the specified number of stored imageoverlays of the specified type, providing a new image overlay to theclient device.
 2. The system of claim 1, wherein providing theidentified image overlay to the client device includes attaching theidentified image overlay to an ephemeral message accessible for apredetermined duration of time.
 3. The system of claim 2, whereinproviding the identified image overlay to the client device furtherincludes: receiving a request from the client device to access theephemeral message; in response to the request, causing the ephemeralmessage to be displayed on the client device; and ceasing display of,and access to, the ephemeral message in response to expiration of thepredetermined duration of time.
 4. The system of claim 1, whereinidentifying the object in the image is based on one or more of: edgematching, grey-scale matching, large model bases, and gradient matching.5. The system of claim 1, wherein the object criteria of the identifiedimage overlay includes an association between the identified object anda source of image data.
 6. The system of claim 1, wherein the memoryfurther stores instructions for causing the system to generate an imageoverlay in response to content uploaded to the system from the clientdevice.
 7. The system of claim 6, wherein generating the image overlayincludes receiving, from the client device, object criteria for thegenerated image overlay.
 8. The system of claim 6, wherein the generatedimage overlay is added to a collection of image overlays from which theidentified image overlay is selected.
 9. The system of claim 1, whereinthe memory further stores instructions for causing the system togenerate an image overlay for transforming the image into a video basedon identifying the object in the image.
 10. The system of claim 9,wherein transforming the image into the video includes adding motion toone or more of: the identified object in the image, and another objectin the image.
 11. The system of claim 1, wherein the object criteria forthe identified image overlay includes a number of object types.
 12. Thesystem of claim 11, wherein the identified object satisfying the objectcriteria includes the number of object types in a plurality of imagescaptured by the client device meeting or exceeding a predeterminedthreshold.
 13. The system of claim 1, wherein the memory further storesinstructions for causing the system to perform operations comprising:accessing filter data and object criteria; generating an image overlaybased on the filter data; and storing data specifying an associationbetween the image overlay and the object criteria.
 14. The system ofclaim 13, wherein the generated image overlay is added to a collectionof image overlays from which the identified image overlay is selected.15. The system of claim 13, wherein the filter data and object criteriaare received from the client device.
 16. The system of claim 1, whereinidentifying the image overlay includes selecting the identified imageoverlay from a plurality of image overlays.
 17. The system of claim 16,wherein the memory further stores instructions for causing the system toperform operations comprising generating a ranking of the plurality ofimage overlays based on specified image overlay priority criteria,wherein identifying the image overlay is based on the ranking of theplurality of image overlays.
 18. The system of claim 17, wherein theimage overlay priority criteria includes criteria based on one or moreof: an image overlay creation date, an image overlay type, and a userranking.
 19. A computer-implemented method comprising: detecting, by acomputer system, that a client device in communication with the computersystem has captured an image; identifying, by the computer system, anobject in the image; identifying, by the computer system, an imageoverlay having object criteria satisfied by the identified object;providing, by the computer system, the identified image overlay to theclient device; storing, by the computer system, the provided imageoverlay in a collection of image overlays associated with the clientdevice; determining, by the computer system, that the collection ofimage overlays contains more than a specified number of stored imageoverlays of a specified type; and in response to determining that thecollection of image overlays contains more than the specified number ofstored image overlays of the specified type, providing a new imageoverlay to the client device.
 20. A non-transitory computer-readablemedium storing instructions that, when executed by a computer system,cause the computer system to perform operations comprising: detectingthat a client device in communication with the system has captured animage; identifying an object in the image; identifying an image overlayhaving object criteria satisfied by the identified object; providing theidentified image overlay to the client device; storing the providedimage overlay in a collection of image overlays associated with theclient device; determining that the collection of image overlayscontains more than a specified number of stored image overlays of aspecified type; and in response to determining that the collection ofimage overlays contains more than the specified number of stored imageoverlays of the specified type, providing a new image overlay to theclient device.